From: Florian Müllner Date: Wed, 26 Oct 2011 19:16:08 +0000 (+0200) Subject: user-menu: Disable combo box if no accounts are enabled X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~7300 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e279ef1c7c251ad1bf46237ae851f86e86bf5a06;p=gnome-shell.git user-menu: Disable combo box if no accounts are enabled If no telepathy accounts have been set up or enabled, the IM status chooser won't have any effect. To avoid confusing behavior, make the status selector insensitive in that case. https://bugzilla.gnome.org/show_bug.cgi?id=662800 --- diff --git a/js/ui/userMenu.js b/js/ui/userMenu.js index 3ae22720c..7e4fbe30c 100644 --- a/js/ui/userMenu.js +++ b/js/ui/userMenu.js @@ -168,11 +168,20 @@ IMStatusChooserItem.prototype = { this._accountMgr = Tp.AccountManager.dup(); this._accountMgr.connect('most-available-presence-changed', Lang.bind(this, this._IMStatusChanged)); + this._accountMgr.connect('account-enabled', + Lang.bind(this, this._IMAccountsChanged)); + this._accountMgr.connect('account-disabled', + Lang.bind(this, this._IMAccountsChanged)); + this._accountMgr.connect('account-removed', + Lang.bind(this, this._IMAccountsChanged)); this._accountMgr.prepare_async(null, Lang.bind(this, function(mgr) { let [presence, status, msg] = mgr.get_most_available_presence(); let savedPresence = global.settings.get_int('saved-im-presence'); + + this._IMAccountsChanged(mgr); + if (savedPresence == presence) { this._IMStatusChanged(mgr, presence, status, msg); } else { @@ -282,6 +291,13 @@ IMStatusChooserItem.prototype = { } }, + _IMAccountsChanged: function(mgr) { + let accounts = mgr.get_valid_accounts().filter(function(account) { + return account.enabled; + }); + this._combo.setSensitive(accounts.length > 0); + }, + _IMStatusChanged: function(accountMgr, presence, status, message) { if (!this._imPresenceRestored) this._imPresenceRestored = true;